/**
 * 
 */
package com.study.map;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author Administrator
 * @date 2019年6月22日
 */
class MyCollection<T>{
	 
    private List<T> list = new ArrayList<>();
 
    public void add(T item){
        list.add(item);
    }
 
    public void remove(T item){
        list.remove(item);
    }
 
    public Iterator<T> iterator(){
        return new MyIterator(list);
    }
 
    public static void main(String[] args) {
    	MyCollection<Integer> collection = new MyCollection<>();
        collection.add(1);
        collection.add(2);
 
        Iterator<Integer> iterator = collection.iterator();
        while (iterator.hasNext()){
            int i = iterator.next();
            System.out.println(i);
        }
	}
    /**
     * MyCollection中定义了内部迭代器MyIterator，有一个私有属性curPos，记录遍历的位置指针。
     * 自定义迭代器
     * */
    private class MyIterator implements Iterator<T>{
 
        private List<T> dataSource;
 
        /**
         * 当前位置的指针
         * */
        private int curPos;
 
        public MyIterator(List<T> data){
            this.dataSource = data;
        }
 
        @Override
        public boolean hasNext() {
            return curPos < dataSource.size();
        }
 
        @Override
        public T next() {
            T item = dataSource.get(curPos);
            curPos ++;
            return item;
        }
    }
}
